'use strict';
const Controller = require('egg').Controller;
const _ = require('lodash');

class BaseController extends Controller {
  /**
   * 成功响应
   * @param {*} data 业务数据
   */
  success(data) {
    if (!_.isObject(data)) data = { message: data };
    this.ctx.body = { message: 'OK', code: 0, status_code: 200, data };
  }

  /**
   * 业务异常
   * @param {*} msg 响应信息
   * @param {*} code 响应错误码
   */
  badRequestError(msg, code) {
    const error = Error(msg);
    error.code = code;
    return error;
  }

  /**
   * Returns a 400 Bad Request error
   * @param {*} msg 响应信息
   * @param {*} code 响应错误码
   */
  badRequest(msg, code = -1) {
    msg = msg || 'bad request';
    this.ctx.status = 400;
    this.ctx.body = { code: code || -1, status_code: 400, message: msg };
    return;
  }

  /**
   * Returns a 401 Unauthorized error
   * @param {*} msg message
   */
  unauthorized(msg) {
    this.ctx.status = 200;
    this.ctx.body = { code: -100, status_code: 401, message: msg };
    return;
  }
}

module.exports = BaseController;
